package com.ruoyi.component;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.awt.*;

/**
 * 与 CommandLineRunner 类似，但支持更灵活的参数解析（封装为 ApplicationArguments）。
 * 特点：
 * 实现 ApplicationRunner 接口的 run(ApplicationArguments args) 方法，执行时机与 CommandLineRunner 一致。
 * 优势：ApplicationArguments 可区分选项参数（如 --name=xxx）和非选项参数，适合需要解析复杂命令行参数的场景
 */
@Slf4j
@Component
public class EnvironmentApplicationRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) {

        log.info("应用启动后执行：根据参数初始化配置...");
        // 获取命令行参数（如 java -jar app.jar --env=prod 100）
        // System.out.println("选项参数：" + args.getOptionNames()); // 输出 [env]
        // System.out.println("非选项参数：" + args.getNonOptionArgs()); // 输出 [100]
        // getAvailableFont();
        inputSomeText();
    }

    //查看当前环境可用的字体
    public static void getAvailableFont() {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        Font[] fonts = ge.getAllFonts();
        for (Font font : fonts) {
            log.info(font.getFontName()); // 打印所有可用字体名称
        }
    }

    public void inputSomeText() {
        log.info("\n " +
                "         _____                    _____                    _____                    _____                    _____          \n" +
                "         /\\    \\                  /\\    \\                  /\\    \\                  /\\    \\                  /\\    \\         \n" +
                "        /::\\    \\                /::\\____\\                /::\\____\\                /::\\    \\                /::\\    \\        \n" +
                "        \\:::\\    \\              /::::|   |               /::::|   |               /::::\\    \\              /::::\\    \\       \n" +
                "         \\:::\\    \\            /:::::|   |              /:::::|   |              /::::::\\    \\            /::::::\\    \\      \n" +
                "          \\:::\\    \\          /::::::|   |             /::::::|   |             /:::/\\:::\\    \\          /:::/\\:::\\    \\     \n" +
                "           \\:::\\    \\        /:::/|::|   |            /:::/|::|   |            /:::/__\\:::\\    \\        /:::/__\\:::\\    \\    \n" +
                "           /::::\\    \\      /:::/ |::|   |           /:::/ |::|   |           /::::\\   \\:::\\    \\      /::::\\   \\:::\\    \\   \n" +
                "  ____    /::::::\\    \\    /:::/  |::|   | _____    /:::/  |::|   | _____    /::::::\\   \\:::\\    \\    /::::::\\   \\:::\\    \\  \n" +
                " /\\   \\  /:::/\\:::\\    \\  /:::/   |::|   |/\\    \\  /:::/   |::|   |/\\    \\  /:::/\\:::\\   \\:::\\    \\  /:::/\\:::\\   \\:::\\____\\ \n" +
                "/::\\   \\/:::/  \\:::\\____\\/:: /    |::|   /::\\____\\/:: /    |::|   /::\\____\\/:::/__\\:::\\   \\:::\\____\\/:::/  \\:::\\   \\:::|    |\n" +
                "\\:::\\  /:::/    \\::/    /\\::/    /|::|  /:::/    /\\::/    /|::|  /:::/    /\\:::\\   \\:::\\   \\::/    /\\::/   |::::\\  /:::|____|\n" +
                " \\:::\\/:::/    / \\/____/  \\/____/ |::| /:::/    /  \\/____/ |::| /:::/    /  \\:::\\   \\:::\\   \\/____/  \\/____|:::::\\/:::/    / \n" +
                "  \\::::::/    /                   |::|/:::/    /           |::|/:::/    /    \\:::\\   \\:::\\    \\            |:::::::::/    /  \n" +
                "   \\::::/____/                    |::::::/    /            |::::::/    /      \\:::\\   \\:::\\____\\           |::|\\::::/    /   \n" +
                "    \\:::\\    \\                    |:::::/    /             |:::::/    /        \\:::\\   \\::/    /           |::| \\::/____/    \n" +
                "     \\:::\\    \\                   |::::/    /              |::::/    /          \\:::\\   \\/____/            |::|  ~|          \n" +
                "      \\:::\\    \\                  /:::/    /               /:::/    /            \\:::\\    \\                |::|   |          \n" +
                "       \\:::\\____\\                /:::/    /               /:::/    /              \\:::\\____\\               \\::|   |          \n" +
                "        \\::/    /                \\::/    /                \\::/    /                \\::/    /                \\:|   |          \n" +
                "         \\/____/                  \\/____/                  \\/____/                  \\/____/                  \\|___|          \n" +
                "                                                                                                                             ");
    }
}
